package com.example.springredisson;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author bsg
 * @date 2021/11/6
 * @description  自定义缓存注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CacheLevel {

    String value() default "";

    /**
     * 唯一  {和only() 同时存在时会以 id 为准}
     * @return
     */
    String id() default "";

    /**
     * 只包含 请求参数只包含 {only} 时 才走缓存
     *  和id 同时存在时会以 only() 失效}    ****暂未实现***
     * @return
     */
    String[] only() default {};

    /**
     *  远程缓存过期时间 默认永久有效
     * @return
     */
    long time() default -1L;

    /**
     * 远程缓存过期时间单位  默认秒
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 操作类型
     * @return
     */
    CacheLevelEnum type() default CacheLevelEnum.SELECT;



}
